Computer-based business systems often contain many business objects to store data and program instructions on a machine-readable hardware storage medium for execution on at least one processor and perform business functions. Each business object may expose one or more services to a user interface, such as services to create or update entities managed by the business object. For example, a business object for storing and manipulating purchase orders may expose services allowing for the creation of new purchase orders, modification of previously-created purchase orders, and other similar functions. The services exposed by a business object may be represented as a hierarchy of nodes.
Business objects are designed to be redundancy-free so that specific content, such as an address, telephone number, etc., only occurs once in the business object. A user interface can discover the services available from various business objects and applications by querying a service layer. The service layer interacts with business objects to identify what services are available for each business object, and returns information about the services to the user interface. Model-driven user interfaces therefore do not include functionality coded therein; instead, all functionality in the user interface is derived from the service layer and business objects. When a service is invoked via the user interface, service providers in the backend applications implement the appropriate service.
Although this structure permits the user interface to reflect the structure of each business object, it does not allow for structural differences between the user interface and the backend database or business object. That is, since the user interface renders data only as presented by the business object, it does not allow for variations in the presentation of data and services. For example, model-driven interfaces generally are unable to display the same data in multiple formats, and it may be difficult to present highly-sophisticated user interfaces since the rendered data must be directly related to the services exposed by each business object. In some circumstances it also may be desirable to perform operations that are not explicitly defined by a core element of a business object before or after activation of an associated user interface element.